SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TDMOVI_BANC_I05]                    
/*-------------------------------------------------------*/            
/*---Empresa              : OFISIS S.A.                --*/            
/*---Cliente              : OFISIS                 --*/                    
/*---Sistema              : Tesoreria                  --*/            
/*---Mödulo               : Empresa                    --*/            
/*---Programa             : Grabaciön Detalle          --*/            
/*---                       Movimiento Bancos          --*/            
/*---                       (Egresos)                  --*/            
/*---Script               : tdbanc_p.sql               --*/            
/*---Nombre SP            : SP_TDMOVI_BANC_I03         --*/            
/*---Desarrollado por     : Javier Flores A.           --*/            
/*---Fecha Creaciön       : 18/06/1999                 --*/            
/*---Base Datos           : Microsoft Sql Server       --*/            
/*---Versiön              : 7.0                        --*/            
/*---Invoca a SP          :                            --*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Modificado 1 por     : Eduardo Vivar Pomiano      --*/            
/*---Fecha Modificaciön   : 03/04/2001                 --*/            
/*---Detalle Modificaciön : Permite grabar docs Clientes en EGRESOS--*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Modificado 2 por     : Carlos Marquez Escobar     --*/            
/*---Fecha Modificaciön   : 25/08/2004                 --*/            
/*---Detalle Modificaciön : Cod Operac y Unidades Cont en Retencio.--*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Modificado 3 por     : Reynaldo Menacho           --*/            
/*---Fecha Modificaciön   : 22/04/2005                 --*/            
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/            
/*---      de los documentos             --*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Modificado 4 por     : Carlos Marquez Escobar     --*/            
/*---Fecha Modificaciön   : 24/01/2005                 --*/            
/*---Detalle Modificaciön : Grabar Imp. Reten. en la Mon Factura Detalle--*/            
/*-------------------------------------------------------*/        
/*---Modificado 5 por     : Miguel Carrasco     --*/            
/*---Fecha Modificaciön   : 02/07/2009                 --*/            
/*---Detalle Modificaciön : Tipo de operacion detraccion--*/            
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/        
/*---Modificado 6 por     : Luis Calixto     --*/            
/*---Fecha Modificaciön   : 16/10/2009                 --*/            
/*---Detalle Modificaciön : Agrebar parametro CO_SUBR  --*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Comentarios                                       --*/            
/*---                                                  --*/            
/*---                                                  --*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Drop Proc SP_TDMOVI_BANC_I01                      --*/            
/*---Grant Execute on SP_TDMOVI_BANC_I01 to public     --*/            
/*---SP_TDMOVI_BANC_I01                                --*/            
/*-------------------------------------------------------*/            
          
   
          
 As            
Declare                     
    @VNNU_SECU TD_IN_001,     @VNIM_MOVI_ANTE  TD_NU_016_004,  @VNIM_TOTA TD_NU_016_004,                    
    @VNIM_CONV_ANTE TD_NU_016_004,   @VNNU_REGI TD_IN_001,    @VSST_SIGN TD_VC_001,                    
    @VNIM_TOTA_CLIE TD_NU_016_004, @VNIM_TOTA_PROV  TD_NU_016_004, @VNIM_CONV_DOCU TD_NU_016_004,                    
    @VSCO_MONE_NACI TD_VC_003, @VSCO_MONE_EXTR TD_VC_003       , @VSCO_TIPO_EGRE  TD_VC_003,                    
    @VSCO_UNID_CONC TD_VC_003,                    
    @VSCO_ESTA_LETR   TD_VC_003, @VSTI_DOCU_RETE   TD_VC_003,                     
    @VSNO_ENTI TD_VC_100, @VSNU_RUCC TD_VC_020,                     
    @VSNU_CHEQ TD_VC_020, @VSNU_DOCU_BANC TD_VC_020,                    
    @VSNU_COMP_BACA TD_VC_020,                     
    @VNIM_TOTA_DIST TD_NU_016_004, @VSTI_CAMB TD_VC_001, @VSTI_ORIG TD_VC_001, @VDFE_OPER TD_DT_001,                    
    @VSCO_COND_CONT TD_VC_003, @VSNU_SERI TD_VC_008, @VSST_APRO_CXPA TD_VC_001, @VNNU_CONT TD_IN_001,                
    @VSCO_ESTA_ORIG TD_VC_001,@VSCO_TIPO_OPER TD_VC_003, @VSST_PAGO_DETR TD_VC_001,@VSST_DETR_CALC TD_VC_001,      
    @INIM_DETR_CALC TD_NU_016_004,  
  
 @ISCO_EMPR     TD_VC_002,                     
 @ISCO_USUA_MODI TD_VC_008_USUA,                    
 @ISCO_BANC     TD_VC_003,                     
 @ISNU_CNTA_BANC TD_VC_020,              
 @ISAA_BNCO   TD_VC_004,                     
 @ISMM_BNCO   TD_VC_002,                     
 @ISTI_MOVI_BANC TD_VC_001,                      
 @ISNU_COMP_BANC TD_VC_008,                     
 @INNU_SECU   TD_IN_001,                    
 @ISTI_ENTI   TD_VC_001,                     
 @ISCO_ENTI   TD_VC_020,                    
 @ISTI_DOCU_ENTI TD_VC_003,                    
 @ISNU_DOCU_ENTI TD_VC_020,                    
 @ISCO_MONE_DOCU TD_VC_003,                    
 @IDFE_DOCU   TD_DT_001,                    
 @IDFE_EMIS   TD_DT_001,                    
 @IDFE_PROG   TD_DT_001,                    
 @INIM_DOCU   TD_NU_016_004,                    
 @INIM_SALD_DOCU TD_NU_016_004,                    
 @INIM_DETA   TD_NU_016_004,                     
 @ISDE_OBSE   TD_VC_100,                    
 @ISST_CIER_DOCU TD_VC_001_SINO,                    
 @ISTI_DOCU   TD_VC_003,                    
 @INFA_TIPO_CAMB TD_NU_015_006,                    
 @ISCO_MONE   TD_VC_003,                      
 @INIM_SALD_CONV TD_NU_016_004,                    
 @INIM_DETA_NEGA TD_NU_016_004,                    
 @ISNU_CORR_COMP TD_VC_020,                    
 @ISTI_MOVI_OPER TD_VC_001,                    
 @ISCO_CNTA_EMPR TD_VC_020,                    
 @ISCO_ORDE_SERV TD_VC_020,                    
 @INNU_SECU_PRPA TD_IN_001,          
 @ISCO_UNID_CNTB TD_VC_003,          
 @INFA_CAMB_EXTR TD_NU_015_006,      
 @ISCO_SUBR TD_VC_003          
  
  
            
 Begin Tran SP_TDMOVI_BANC_I01         
  
  
/** inserta en la TEMPORAL **/     
SELECT    
 @ISCO_EMPR = CO_EMPR,                     
 @ISCO_USUA_MODI = CO_USUA_MODI,                    
 @ISCO_BANC = CO_BANC,                     
 @ISNU_CNTA_BANC = NU_CNTA_BANC,              
 @ISAA_BNCO = AA_BNCO,                     
 @ISMM_BNCO = MM_BNCO,                     
 @ISTI_MOVI_BANC = TI_MOVI_BANC,                      
 @ISNU_COMP_BANC = NU_COMP_BANC,                     
 @INNU_SECU = NU_SECU,                    
 @ISTI_ENTI = TI_ENTI,                     
 @ISCO_ENTI = CO_ENTI,                    
 @ISTI_DOCU_ENTI = TI_DOCU_ENTI,                    
 @ISNU_DOCU_ENTI = NU_DOCU_ENTI,                    
 @ISCO_MONE_DOCU = CO_MONE_DOCU,                    
 @IDFE_DOCU = FE_DOCU,                    
 @IDFE_EMIS = FE_EMIS,                    
 @IDFE_PROG = FE_PROG,                    
 @INIM_DOCU = IM_DOCU,                    
 @INIM_SALD_DOCU = IM_SALD_DOCU,                    
 @INIM_DETA = IM_DETA,                     
 @ISDE_OBSE = DE_OBSE,                    
 @ISST_CIER_DOCU = ST_CIER_DOCU,                    
 @ISTI_DOCU = TI_DOCU,                    
 @INFA_TIPO_CAMB = FA_TIPO_CAMB,                    
 @ISCO_MONE = CO_MONE,                      
 @INIM_SALD_CONV = IM_SALD_CONV,                    
 @INIM_DETA_NEGA = IM_DETA_NEGA,                    
 @ISNU_CORR_COMP = NU_CORR_COMP,                    
 @ISTI_MOVI_OPER = TI_MOVI_OPER,                    
 @ISCO_CNTA_EMPR = CO_CNTA_EMPR,                    
 @ISCO_ORDE_SERV = CO_ORDE_SERV,                    
 @INNU_SECU_PRPA = NU_SECU_PRPA,          
 @ISCO_UNID_CNTB = CO_UNID_CNTB,          
 @INFA_CAMB_EXTR = FA_CAMB_EXTR,      
 @ISCO_SUBR = CO_SUBR    
FROM #TWTDMOVI_BANC_I05  
             
                    
 Select @VSCO_MONE_NACI = CO_MONE_DEFA,                    
   @VSCO_MONE_EXTR = CO_MONE_EXTR,                    
   @VSCO_COND_CONT = CO_COND_CONT,                    
   @VSCO_TIPO_EGRE = CO_TIPO_OPEG,  ---- Egreso o Cargo                    
   @VSST_APRO_CXPA = ST_APRO_CXPA                    
 From TMPARA_TESO                    
 Where CO_EMPR = @ISCO_EMPR                    
             
 -- Documento Retencion ---            
 Select @VSTI_DOCU_RETE = TI_DOCU                    
 From TTDOCU_CNTB                    
 Where ST_DOCU_0021 = 'S'                    
             
 If Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                
 -- Se busca el estado actual del documento                
 Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ORIG output                
             
 If @ISCO_MONE_DOCU != @ISCO_MONE                    
 Begin                    
  Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                    
  From TTFACA_OPCI                    
  Where CO_EMPR = @ISCO_EMPR                    
  And CO_MODU = 'TEEM0001'                    
  And CO_MENU = 'FTEEMAI'                    
              
  If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )                    
   Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG           
   From TMPARA_TESO                    
   Where CO_EMPR = @ISCO_EMPR                    
             
  Select @VDFE_OPER = FE_OPER,                    
    @VSCO_UNID_CONC = CO_UNID_CONC,      
    @VSCO_TIPO_OPER = CO_TIPO_OPER,       
    @VSST_PAGO_DETR = ST_PAGO_DETR                   
  From   TCMOVI_BANC                    
  Where  CO_EMPR = @ISCO_EMPR                     
  and    CO_UNID_CONC = @ISCO_UNID_CNTB          
  and    CO_BANC = @ISCO_BANC                     
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                      
  and    AA_BNCO = @ISAA_BNCO                    
  and    MM_BNCO = @ISMM_BNCO                     
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                    
  and    NU_COMP_BANC = @ISNU_COMP_BANC                     
             
  Select @VNIM_CONV_DOCU = (Select OFITESO.dbo.FN_TCFACT_CAMB_Q02(@ISCO_MONE, @ISCO_MONE_DOCU,                     
  @VDFE_OPER, @INIM_DETA, @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB))                    
             
  Select @VNIM_CONV_DOCU = Round(@VNIM_CONV_DOCU, 2)                    
 End                    
 Else       
 Begin                    
  Select @VSCO_UNID_CONC = CO_UNID_CONC,      
  @VSCO_TIPO_OPER = CO_TIPO_OPER,      
  @VSST_PAGO_DETR = ST_PAGO_DETR                   
  From   TCMOVI_BANC                    
  Where  CO_EMPR = @ISCO_EMPR          
  and    CO_UNID_CONC = @ISCO_UNID_CNTB          
  and    CO_BANC = @ISCO_BANC                     
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                      
  and    AA_BNCO = @ISAA_BNCO                    
  and    MM_BNCO = @ISMM_BNCO                     
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                    
  and    NU_COMP_BANC = @ISNU_COMP_BANC                     
              
  Select @VNIM_CONV_DOCU = @INIM_DETA                            
             
 End                    
             
 If @INNU_SECU IS NULL                    
 Begin                    
      
  Select @VNNU_SECU   = NU_SECU                    
  From   TDMOVI_BANC      
  Where  CO_EMPR = @ISCO_EMPR                    
  and    CO_UNID_CONC = @ISCO_UNID_CNTB          
  and    CO_BANC = @ISCO_BANC                    
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                    
  and    AA_BNCO = @ISAA_BNCO                    
  and    MM_BNCO = @ISMM_BNCO               
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                    
  and    NU_COMP_BANC = @ISNU_COMP_BANC                    
             
  If @VNNU_SECU > 0                    
   Select @VNNU_SECU = @VNNU_SECU + 1                    
  Else                    
   Select @VNNU_SECU = 1                       
             
  Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) From #TWRETE_BANC                  
             
  IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0                  
  Begin                    
   Select @VSNU_SERI = Substring(@ISNU_DOCU_ENTI, 1, Patindex('%-%', @ISNU_DOCU_ENTI)-1)                     
   /* Genero el œltimo correlativo para el documento comp. de retenci½n */                    
   Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENTI, @VSNU_SERI, @ISNU_DOCU_ENTI OUTPUT                    
  End                    
        
           
 ---------- TIPO DE OPERACION DETRACCION ---------        
   SELECT @VSST_DETR_CALC = ST_DETR_CALC      
   FROM TTTIPO_OPER      
   WHERE CO_EMPR = @ISCO_EMPR      
   AND CO_TIPO_OPER = @VSCO_TIPO_OPER      
      
  IF ISNULL(@VSST_DETR_CALC,'N') = 'S' AND ISNULL(@VSST_PAGO_DETR,'N') = 'S'      
   BEGIN      
     SET @INIM_DETR_CALC = @INIM_DETA      
   END       
  ELSE      
   BEGIN       
     SET @INIM_DETR_CALC = 0      
   END      
       
 -----------------------------------------------------       
        
  Insert into TDMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC,                    
  NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_EMIS,                 
  FE_DOCU, FE_PROG, IM_DOCU, IM_SALD_DOCU, IM_DETA, IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU,                 
  IM_DETA_NEGA, IM_SALD_CONV, NU_CORR_COMP, TI_MOVI_OPER, CO_CNTA_EMPR, CO_ORDE_SERV,                 
  NU_SECU_PRPA, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC, FA_CAMB_EXTR,IM_DETR_CALC,      
  CO_SUBR)          
  Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC,                    
  @ISNU_COMP_BANC, @VNNU_SECU, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @ISCO_MONE_DOCU,                   
  @IDFE_EMIS, @IDFE_DOCU, @IDFE_PROG, @INIM_DOCU, @INIM_SALD_DOCU, @INIM_DETA, @VNIM_CONV_DOCU,             
  @ISDE_OBSE, @ISST_CIER_DOCU, @INIM_DETA_NEGA , @INIM_SALD_CONV, @ISNU_CORR_COMP, @ISTI_MOVI_OPER,                 
  @ISCO_CNTA_EMPR, @ISCO_ORDE_SERV, @INNU_SECU_PRPA, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),       
  @ISCO_UNID_CNTB, @INFA_CAMB_EXTR,@INIM_DETR_CALC, @ISCO_SUBR)          
         
            
  If @@error <> 0                    
  Begin                    
   Rollback Tran SP_TDMOVI_BANC_I01            
   Return            
  End                        
             
  If @VSST_APRO_CXPA = 'S'                    
  Begin                
   Update TDPROG_PAGO                    
   Set   TI_SITU = 'PAG',              
   CO_USUA_MODI = @ISCO_USUA_MODI,                   
   FE_USUA_MODI = Getdate()                           
   Where CO_EMPR     = @ISCO_EMPR                    
   And  CO_PROV      = @ISCO_ENTI                    
   And  CO_TIPO_DOCU = @ISTI_DOCU_ENTI                    
   And  NU_DOCU_PROV = @ISNU_DOCU_ENTI                    
   And  NU_SECU      = @INNU_SECU_PRPA                    
               
   If @@error <> 0                    
   Begin                    
    Rollback Tran SP_TDMOVI_BANC_I01                    
    Return                    
   End                        
  End                
             
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                
  Begin                
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos         
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                 
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU                
               
   If @@error <> 0                  
   Begin                  
    Rollback Tran SP_TDMOVI_BANC_I01                 
    Return                  
   End                      
  End                
  Else                 
   If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                
   Begin                
    --Se cancela el documento y se graba en tabla de kardex de estados de documentos                
    Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                 
    @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU                
                
    If @@error <> 0                  
    Begin                  
     Rollback Tran SP_TDMOVI_BANC_I01                 
     Return                  
    End                      
   End                 
  End                    
 Else                     
 Begin                    
  Select @VNIM_CONV_ANTE = Isnull(IM_CONV_DOCU,0)                    
  From  TDMOVI_BANC                     
  Where CO_EMPR = @ISCO_EMPR                    
  And   CO_UNID_CONC = @ISCO_UNID_CNTB          
  And   CO_BANC = @ISCO_BANC                    
  And   NU_CNTA_BANC = @ISNU_CNTA_BANC                
  And   AA_BNCO = @ISAA_BNCO                    
  And   MM_BNCO = @ISMM_BNCO                    
  And   TI_MOVI_BANC = @ISTI_MOVI_BANC                    
  And   NU_COMP_BANC = @ISNU_COMP_BANC                    
  And   NU_SECU = @INNU_SECU              
      
 ------- DETRACCION -----      
      
   SELECT @VSST_DETR_CALC = ST_DETR_CALC      
   FROM TTTIPO_OPER      
   WHERE CO_EMPR = @ISCO_EMPR      
   AND CO_TIPO_OPER = @VSCO_TIPO_OPER      
      
      
    IF ISNULL(@VSST_DETR_CALC,'N') = 'S' AND ISNULL(@VSST_PAGO_DETR,'N') = 'S'      
   BEGIN      
     SET @INIM_DETR_CALC = @INIM_DETA      
   END       
  ELSE      
   BEGIN       
     SET @INIM_DETR_CALC = 0      
   END             
             
  --------------------------------------      
      
  IF RTRIM(ISNULL(@ISCO_CNTA_EMPR, '')) = ''                  
   Update TDMOVI_BANC                   
   Set IM_DETA = @INIM_DETA,                  
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                 
   DE_OBSE = @ISDE_OBSE,                  
   ST_CIER_DOCU = @ISST_CIER_DOCU,                  
   IM_DETA_NEGA = @INIM_DETA_NEGA,      
   IM_DETR_CALC = @INIM_DETR_CALC,                
   FE_USUA_MODI = getdate(),                  
   CO_USUA_MODI = @ISCO_USUA_MODI                  
   Where CO_EMPR = @ISCO_EMPR                  
   and   CO_UNID_CONC = @ISCO_UNID_CNTB          
   And   CO_BANC = @ISCO_BANC                  
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC                  
   And   AA_BNCO = @ISAA_BNCO                  
   And   MM_BNCO = @ISMM_BNCO                  
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC                  
   And   NU_COMP_BANC = @ISNU_COMP_BANC                  
   And   NU_SECU = @INNU_SECU                  
  ELSE                  
   Update TDMOVI_BANC                   
   Set TI_MOVI_OPER = @ISTI_MOVI_OPER,                  
   CO_CNTA_EMPR = @ISCO_CNTA_EMPR,                  
   TI_ENTI = @ISTI_ENTI,                  
   CO_ENTI = @ISCO_ENTI,                  
   CO_ORDE_SERV = @ISCO_ORDE_SERV,                 
   IM_DETA = @INIM_DETA,                  
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                                
   DE_OBSE = @ISDE_OBSE,                  
   ST_CIER_DOCU = @ISST_CIER_DOCU,                  
   IM_DETA_NEGA = @INIM_DETA_NEGA,       
   IM_DETR_CALC = @INIM_DETR_CALC,                  
   FE_USUA_MODI = getdate(),                  
   CO_USUA_MODI = @ISCO_USUA_MODI                  
   Where CO_EMPR = @ISCO_EMPR                  
   And   CO_UNID_CONC = @ISCO_UNID_CNTB          
   And   CO_BANC = @ISCO_BANC                  
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC                  
   And   AA_BNCO = @ISAA_BNCO                  
   And   MM_BNCO = @ISMM_BNCO                  
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC                  
   And   NU_COMP_BANC = @ISNU_COMP_BANC                  
   And   NU_SECU = @INNU_SECU                  
             
  If @@error <> 0                    
  Begin                    
   Rollback Tran SP_TDMOVI_BANC_I01                    
   Return                    
  End                        
             
  Select @VNIM_CONV_DOCU = @VNIM_CONV_DOCU - @VNIM_CONV_ANTE                
              
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                
  Begin                
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos                
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                 
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU                
               
   If @@error <> 0                  
   Begin                  
   Rollback Tran SP_TDMOVI_BANC_I01                 
   Return                  
   End                      
  End                
  Else                 
  If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                
  Begin                
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos                
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                 
   @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU                
               
   If @@error <> 0                  
   Begin                  
    Rollback Tran SP_TDMOVI_BANC_I01                 
    Return                  
   End                      
  End                
             
 End                    
             
 Select @VNIM_MOVI_ANTE  = Isnull(IM_MOVI,0)                     
 From   TCMOVI_BANC                    
 Where  CO_EMPR = @ISCO_EMPR                     
 and    CO_UNID_CONC = @ISCO_UNID_CNTB          
 and    CO_BANC = @ISCO_BANC                     
 and    NU_CNTA_BANC = @ISNU_CNTA_BANC                      
 and    AA_BNCO = @ISAA_BNCO                    
 and    MM_BNCO = @ISMM_BNCO                     
 and    TI_MOVI_BANC = @ISTI_MOVI_BANC                    
 and    NU_COMP_BANC = @ISNU_COMP_BANC                     
             
 /* Sumo todos los documentos de clientes */                    
             
 Select @VNIM_TOTA_CLIE = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)             From TDMOVI_BANC                    
 Where CO_EMPR = @ISCO_EMPR                    
 and   CO_UNID_CONC = @ISCO_UNID_CNTB          
 And   CO_BANC = @ISCO_BANC                    
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                    
 And   AA_BNCO = @ISAA_BNCO                      
 And   MM_BNCO = @ISMM_BNCO                    
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                    
 And   NU_COMP_BANC = @ISNU_COMP_BANC            
 And  TI_ENTI = 'C'                    
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''                    
             
 /* Sumo todos los documentos de proveedores */                    
             
 Select @VNIM_TOTA_PROV = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)                    
 From TDMOVI_BANC                    
 Where CO_EMPR = @ISCO_EMPR                    
 and   CO_UNID_CONC = @ISCO_UNID_CNTB          
 And   CO_BANC = @ISCO_BANC                    
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                    
 And   AA_BNCO = @ISAA_BNCO                    
 And   MM_BNCO = @ISMM_BNCO                    
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                    
 And   NU_COMP_BANC = @ISNU_COMP_BANC                    
 And   TI_ENTI = 'P'                    
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''                    
             
 Select  @VNIM_TOTA_DIST = Isnull(Sum(Isnull(PatIndex(TI_MOVI_OPER, 'C')* IM_DETA - PatIndex(TI_MOVI_OPER, 'A')*          
IM_DETA,0)),0)                     
 From  TDMOVI_BANC                    
 Where CO_EMPR = @ISCO_EMPR                    
 and CO_UNID_CONC = @ISCO_UNID_CNTB          
 And CO_BANC = @ISCO_BANC                    
 And NU_CNTA_BANC = @ISNU_CNTA_BANC                    
 And AA_BNCO = @ISAA_BNCO                    
 And MM_BNCO = @ISMM_BNCO                    
 And TI_MOVI_BANC = @ISTI_MOVI_BANC                    
 And NU_COMP_BANC = @ISNU_COMP_BANC                    
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) != ''                    
             
 Select  @VNIM_TOTA = @VNIM_TOTA_PROV + @VNIM_TOTA_CLIE + ISNULL(@VNIM_TOTA_DIST,0)                    
             
 Update TCMOVI_BANC                    
 Set IM_MOVI = Round(@VNIM_TOTA,2),                    
 CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                             
 Where CO_EMPR = @ISCO_EMPR                     
 And   CO_UNID_CONC = @ISCO_UNID_CNTB          
 And   CO_BANC = @ISCO_BANC                     
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                     
 And   AA_BNCO = @ISAA_BNCO                    
 And   MM_BNCO = @ISMM_BNCO                     
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                     
 And   NU_COMP_BANC = @ISNU_COMP_BANC                     
             
 If @@error <> 0                    
 Begin                    
  Rollback Tran SP_TDMOVI_BANC_I01                   
  Return                    
 End                      
             
 Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) From #TWRETE_BANC                  
             
 /* PARA COMPROBANTES DE RETENCION*/                    
             
 IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0                  
 BEGIN                    
             
  Select  @VSNO_ENTI = NO_AUXI, @VSNU_RUCC = NU_RUCS                    
  From  TMAUXI_EMPR                     
  Where  CO_EMPR = @ISCO_EMPR                    
  And TI_AUXI_EMPR = @ISTI_ENTI                    
  And CO_AUXI_EMPR = @ISCO_ENTI                    
              
  Select  @VSNU_CHEQ = ISNULL(NU_CHEQ, ''),                     
  @VSNU_DOCU_BANC = ISNULL(NU_DOCU_BANC, '')                    
  From  TCMOVI_BANC                    
  Where  CO_EMPR = @ISCO_EMPR                     
  And CO_UNID_CONC = @ISCO_UNID_CNTB          
  And CO_BANC = @ISCO_BANC                     
  And NU_CNTA_BANC = @ISNU_CNTA_BANC                     
And AA_BNCO = @ISAA_BNCO                    And MM_BNCO = @ISMM_BNCO                     
  And TI_MOVI_BANC = @ISTI_MOVI_BANC                     
  And NU_COMP_BANC = @ISNU_COMP_BANC                     
             
             
  Select @VSNU_COMP_BACA = Case Len(Rtrim(Ltrim(@VSNU_CHEQ)))          
  When 0 Then  @VSNU_DOCU_BANC                    
  Else @VSNU_CHEQ                    
 End                    
             
  Insert Into TCCOMP_RETE                    
  (CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, FA_TIPO_CAMB, CO_PROV, NO_PROV, NU_RUCC, CO_MONE,                    
  CO_BANC, NU_CNTA_BANC, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI,          
FE_USUA_MODI)                    
  Values (@ISCO_EMPR, @ISNU_DOCU_ENTI, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_ENTI, @VSNO_ENTI, @VSNU_RUCC, @ISCO_MONE_DOCU,          
@ISCO_BANC, @ISNU_CNTA_BANC,                    
  @ISAA_BNCO, @ISMM_BNCO, @ISNU_COMP_BANC, @VSNU_COMP_BACA, 'ACT', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())           
                  
              
  If @@error <> 0                    
  Begin                    
   Rollback Tran SP_TDMOVI_BANC_I01                    
   Return                    
 End                      
             
 Insert Into TDCOMP_RETE                    
 (CO_EMPR, NU_COMP_RETE,NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS,             
  IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV,             
  IM_COMP_PAGO,            
  CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                    
 Select  CO_EMPR, @ISNU_DOCU_ENTI, NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS,      
  IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV,             
  ( dbo.FN_TCFACT_CAMB_Q02(@VSCO_MONE_NACI, @ISCO_MONE, @VDFE_OPER, IM_RETE_CONV, @VSTI_CAMB, @VSTI_ORIG, 'S',          
@VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB) ) IM_COMP_PAGO,            
  @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE()                
 From #TWRETE_BANC            
 Where             
 CO_EMPR = @ISCO_EMPR And            
 CO_PROV = @ISCO_ENTI            
            
             
 If @@error <> 0                    
 Begin                    
  Rollback Tran SP_TDMOVI_BANC_I01                    
  Return                    
 End                    
             
             
 Insert Into                
  TMDOCU_PROV(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,                     
  CO_TIPO_OPER, CO_COND_PAGO, CO_UNID_CONC, FE_VENC,                     
  FE_EMIS, FE_RECE, FE_PROG_PAGO, FE_REGI_COMP, FA_TIPO_CAMB, CO_MONE,                     
  IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET,                     
  ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN,                     
  ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN,                     
  ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, PC_DCT1, IM_DCT1,                     
  PC_DCT2, IM_DCT2, PC_IMP1, IM_IMP1,                     
  PC_IMP2, IM_IMP2, PC_IMP3, IM_IMP3, IM_TOTA,                     
  IM_PAGA, CO_ESTA_DOCU, ST_CONT, TI_PROV, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                    
 Values( @ISCO_EMPR, @ISCO_ENTI, @VSTI_DOCU_RETE, @ISNU_DOCU_ENTI,                     
  @VSCO_TIPO_EGRE, @VSCO_COND_CONT, @VSCO_UNID_CONC, @IDFE_DOCU,                     
  @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_MONE_DOCU,                    
  @INIM_DOCU, 0, 0, 0, 0,                    
  'N', 'N', 'N','N', 'N',                     
  'N', 'N', 'N','N', 'N',                     
  'N', 'N', 'N', 0, 0,                     
  0, 0, 0, 0,                     
  0, 0, 0, 0, @INIM_DOCU,                    
  @INIM_DOCU, 'PAG', 'N', 'J', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())                
             
 If @@error <> 0                    
 Begin                    
  Rollback Tran SP_TDMOVI_BANC_I01                    
  Return                    
 End                    
             
 Delete #TWRETE_BANC            
 Where             
 CO_EMPR = @ISCO_EMPR And            
 CO_PROV = @ISCO_ENTI            
            
             
 END                    
 /* Fin para Comprobantes de Retenci«n */                                       
commit Tran SP_TDMOVI_BANC_I01                    
                    
/*------------------------ Fin ------------------------------*/
GO
